/**
 * 
 */
package com.wrupple.muba.rest.client;

import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.Response;
import com.google.gwt.user.client.rpc.AsyncCallback;

/**
 * Maneja respuestas en texto plano recibidas por el proxy.
 * 
 * @author japi
 * 
 * 
 */
public abstract class ManejadorRespuestaProxy implements AsyncCallback<String>, RequestCallback {

	public ManejadorRespuestaProxy() {
		super();
	}

	private String URL;

	public String getURL() {
		return URL;
	}

	public void setURL(String uRL) {
		URL = uRL;
	}

	/**
	 * Si la petición falla se manda llamar este método
	 * 
	 * @param caught
	 *            excepcion por la cual falló la petición
	 */
	public abstract void alFallar(Throwable caught);

	/**
	 * se manda llamar este método Al recibir una respuesta de manera exitosa
	 * 
	 * @param respuesta
	 *            contenido de la respuesta
	 */
	public abstract void alRecibir(String respuesta, String url);

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.google.gwt.user.client.rpc.AsyncCallback#onFailure(java.lang.Throwable
	 * )
	 */
	public void onFailure(Throwable caught) {
		this.alFallar(caught);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.google.gwt.user.client.rpc.AsyncCallback#onSuccess(java.lang.Object)
	 */
	public void onSuccess(String result) {
		this.alRecibir(result, this.URL);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.google.gwt.http.client.RequestCallback#onResponseReceived(com.google
	 * .gwt.http.client.Request, com.google.gwt.http.client.Response)
	 */
	public void onResponseReceived(Request request, Response response) {
		this.alRecibir(response.getText(), this.URL);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.google.gwt.http.client.RequestCallback#onError(com.google.gwt.http
	 * .client.Request, java.lang.Throwable)
	 */
	public void onError(Request request, Throwable exception) {
		this.alFallar(exception);

	}
}
